package com.hfut.jpoa.service;

import java.util.List;

import com.hfut.jpoa.common.dto.ResultDto;
import com.hfut.jpoa.dto.UserDTO;
import com.hfut.jpoa.model.Syspara;
import com.hfut.jpoa.model.User;
import com.hfut.jpoa.service.exception.UserException;

public interface UserService
{
	/**
	 * 保存用户
	 * 
	 * @param user
	 *            　用户信息
	 * @return 返回主键信息
	 */
	public Integer saveUser(User user) throws UserException;

	/**
	 * 删除用户, 根据用户账号id
	 * 
	 * @param loginId
	 *            　 用户登录账号id
	 * @throws UserException
	 * @return 返回记录数，不一定准确
	 */
	public int deleteUser(String loginId) throws UserException;

	/**
	 * 查询用户, 根据用户账号id
	 * 
	 * @param loginId
	 *            用户登录账号id
	 * @throws UserException
	 * @return 用户信息
	 */
	public User findUser(String loginId) throws UserException;

	/**
	 * 根据用户和密码查询用户
	 * 
	 * @param username
	 *            用户名
	 * @param password
	 *            密码
	 * @return 用户信息
	 * @throws UserException
	 */
	public User findUser(String username, String password) throws UserException;

	/**
	 * 分页查询用户列表
	 * 
	 * @param userDTO
	 * @return
	 * @throws UserException
	 */
	public ResultDto<User> list(UserDTO userDTO) throws UserException;

	/**
	 * 查询用户
	 * 
	 * @param userDTO
	 * @return
	 * @throws UserException
	 */
	public ResultDto<User> queryUserInfoForPage(UserDTO userDTO)
	        throws UserException;

	/**
	 * 自动根据用户名生成首字母拼音
	 * 
	 * @return
	 */
	public String createUserCode(User user) throws UserException;

	/**
	 * 验证用户编码是否存在
	 * 
	 * @param user
	 * @return
	 * @throws UserException
	 */
	public boolean codeValidator(User user) throws UserException;

	/**
	 * 查找用户详情
	 * 
	 * @param user
	 * @return
	 * @throws UserException
	 */
	public User findUserInfo(User user) throws UserException;

	/**
	 * 更新用户信息
	 * 
	 * @param user
	 */
	public void updateUser(User user) throws UserException;

	/**
	 * 加载用户信息列表
	 * @param user
	 * @return
	 * @throws UserException
	 */
	public List<User> queryUser(User user) throws UserException;

}
